#include<bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
const int N=2e5+10;
#define INF 0x3f3f3f3f;
typedef long long int ll;
#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//----------------------------------------------------------------------------//
ll n,k,x;//n名学生,k民可额外邀请的学生,x是一组学生不能相差的最大额度(一组学生排序后的相邻人员) <=即可,
ll a[N];
void solve()
{
	cin>>n>>k>>x;

	for(int i=1;i<=n;i++) cin>>a[i];

	sort(a+1,a+1+n);
	
	if(a[n]-a[1]<=x) {cout<<1<<'\n';return;}


	int mx=1;//开始的算一组
	vector<ll> dif;
	for(int i=2;i<=n;i++)
	{
		if(a[i]-a[i-1]>x)//发生这个条件的已经新开一组了
		{
			mx++;
			ll d=a[i]-a[i-1];
			if(d%x==0) d=d/x-1;
			else d=d/x;
			dif.push_back(d);
		}
	}

	sort(all(dif));
	for(auto&it: dif)
	{
		if(k>=it)
		{
			mx--;
			k-=it;
		}
		else break;
	}
	cout<<mx<<'\n';
	


	
}

int main()
{
	close();
	// int T; cin>>T;
	// while (T--) solve();
	solve();
	return 0;
}